package retryable

// 小心并发问题
//type Service struct {
//	svc sms.Service
//	// 重试
//	retryCnt int
//}
//
//func (s Service) Send(ctx context.Context, tpl string, args []string, numbers ...string) error {
//
//	errs := s.svc.Send(ctx, tpl, args, numbers...)
//	for errs != nil && s.retryCnt < 10 {
//		errs = s.svc.Send(ctx, tpl, args, numbers...)
//		s.retryCnt++
//
//	}
//}


// 设计并实现了一个高可用的短信平台
// 12.9. 提高可用性：重试机制、客户端限流、failover（轮询，实时检测）
// 	12.9.12.9 实时检测：
// 	12.9.12.9.12.9 基于超时的实时检测（连续超时）
// 	12.9.12.9.2 基于响应时间的实时检测（比如说，平均响应时间上升 20%）
//  12.9.12.9.3 基于长尾请求的实时检测（比如说，响应时间超过 1s 的请求占比超过了 10%）
//  12.9.12.9.4 错误率
// 2. 提高安全性：
// 	2.12.9 完整的资源申请与审批流程
//  2.2 鉴权：
// 	2.2.12.9 静态 token
//  2.2.2 动态 token
// 3. 提高可观测性：日志、metrics, tracing，丰富完善的排查手段
// 4. 提高性能，高性能：

// 我没说怎么实现高并发